"""
各种处理 str 的函数
"""

# =============================================== 1 提取字符串中的日期
from dateutil.parser import parse
import re
from my_py_toolkit.decorator.decorator import try_except

reg_date = '\d{4}(年|\.|-)\d{1,2}(月|\.|-)\d{1,2}日?(?:\s*(\d{1,2}(时|:))(\d{1,2}(分|:))?(\d{1,2}秒?)?)?'

def preprocess_date_string(date_str):
    date_str = (date_str.replace('年', '-')
                          .replace('月', '-')
                          .replace('日', ' ')
                          .replace('时', ':')
                          .replace('分', ':')
                          .replace('秒', ''))
    parts = date_str.strip().split(' ')
    if len(parts) == 2 and ':' in parts[1]:
        time_parts = parts[1].split(':')
        while len(time_parts) < 3:  # Ensure three time parts: hour, minute, second
            time_parts.append('00')
        parts[1] = ':'.join(filter(None, time_parts))  # Remove empty strings before joining
    elif len(parts) == 1:
        parts.append('00:00:00')  # Add default time part if missing
    return ' '.join(parts)

def format_date(date_str):
    preprocessed_str = preprocess_date_string(date_str)
    dt = parse(preprocessed_str, fuzzy=True)
    return dt.strftime("%Y-%m-%d %H:%M:%S")

@try_except()
def extract_format_data(value):
    search = re.search(reg_date, value)
    if not search:
        return ""
    
    date_str = search.group()
    date_str = format_date(date_str)
    return date_str

if __name__ == '__main__':
    date_strings = [
    "2020年1月1日",
    "2020年01月01日",
    "2020.01.01",
    "2020-01-01",
    "2020年01月01日13时",
    "2020年1月1 13时",
    "2020年01月01日13时11",
    "2020年01月01日13时11分",
    "2020年01月01日13时11分11",
    "2020年01月01日13时11分11秒",
    "2020年1月1日3时",
    "2020年1月1日13时",
    "2020年1月1日3时1分",
    "2020年1月1日3时1分1秒",
    "2020.01.01 13:12:11",
    "2020-01-01 13:12:11",
    "2020.01.01 13:12",
    "2020-01-01 13:12"
    ]
    formatted_dates = [extract_format_data(date) for date in date_strings]
    print(formatted_dates)


